﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PracticasParaEntrega
{
    class CalculaNumRacional
    {
        //Variables
        double numerador;
        double denominador;

        //Constructor
        public CalculaNumRacional(double numerador, double denominador)
        {
            this.numerador = numerador;
            this.denominador = denominador;
        }
        //Funcion Suma racional sobrecargando el operador mas (+)
        public static CalculaNumRacional operator+ (CalculaNumRacional var1, CalculaNumRacional var2)
        {
            if (var1.denominador == var2.denominador)
            {
                return new CalculaNumRacional((var1.numerador + var2.numerador), (0 + var1.denominador));
            }
            else 
            {
                return new CalculaNumRacional(((var1.numerador*var1.denominador)+(var2.numerador*var2.denominador)), (0+(var1.denominador*var2.denominador)));
            }
        }

        //Funcion resta racional sobrecargando el operador menos (-)
        public static CalculaNumRacional operator- (CalculaNumRacional var1, CalculaNumRacional var2)
        {
            if (var1.denominador == var2.denominador)
            {
                return new CalculaNumRacional((var1.numerador - var2.numerador), (0 + var1.denominador));
            }
            else
            {
                return new CalculaNumRacional(((var1.numerador * var1.denominador) - (var2.numerador * var2.denominador)), (0 + (var1.denominador * var2.denominador)));
            }
        }

        //Funcion multiplicar racional sobrecargando el operador multiplicar (*)
        public static CalculaNumRacional operator* (CalculaNumRacional var1, CalculaNumRacional var2)
        {
            return new CalculaNumRacional((var1.numerador*var2.numerador), (var1.denominador*var2.denominador));
        }

        //Funcion dividir racional sobrecargando el operador dividir (/)
        public static CalculaNumRacional operator/ (CalculaNumRacional var1, CalculaNumRacional var2)
        {
            return new CalculaNumRacional((var1.numerador*var2.denominador), (var1.denominador*var2.numerador));
        }
        
        public override string ToString()
        {
            return (System.String.Format("{0} / {1}", numerador, denominador));
        }


    }
}
